// BandsInTown Java API Client - BandsInTown service interface
// Copyright 2009 PriceFeeder Inc.  All rights reserved.
// http://code.google.com/p/bandsintown-java/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of PriceFeeder Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

package com.pricefeeder.bandsintown.model;

import java.util.List;

import javax.xml.datatype.XMLGregorianCalendar;

/**
 * Event model object.
 * @author Eli Colner
 *
 */
public class Event {

	/**
	 * Unique identifier for event.
	 */
	private int id;
	
	/**
	 * Url of event.
	 */
	private String url;
	
	/**
	 * Date of event.
	 */
	private XMLGregorianCalendar datetime;
	
	/**
	 * Url for tickets to event.
	 */
	private String ticket_url;
	
	/**
	 * List of artists at the event.
	 */
	private List<Artist> artists;
	
	/**
	 * {@link Venue} for the event.
	 */
	private Venue venue;
	
	/**
	 * Status of the event.
	 */
	private String status;
	
	/**
	 * Ticket status of the event.
	 */
	private String ticket_status;
	
	/**
	 * Date when tickets are for sale.
	 */
	private XMLGregorianCalendar on_sale_datetime;
	
	/**
	 * Gets unique identifier of event.
	 * @return unique identifier
	 */
	public int getId() {
		return id;
	}

	/**
	 * Sets unique identifier of event.
	 * @param id unique identifier
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * Gets the ul of event.
	 * @return the url
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * Sets the url of event.
	 * @param url the url
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * Gets the date of event.
	 * @return the date
	 */
	public XMLGregorianCalendar getDatetime() {
		return datetime;
	}

	/**
	 * Sets the date of event.
	 * @param dateTime the date
	 */
	public void setDatetime(XMLGregorianCalendar dateTime) {
		this.datetime = dateTime;
	}

	/**
	 * Gets the ticket url of event.
	 * @return the url
	 */
	public String getTicket_url() {
		return ticket_url;
	}

	/**
	 * Sets the ticket url of event.
	 * @param ticketUrl the url
	 */
	public void setTicket_url(String ticketUrl) {
		ticket_url = ticketUrl;
	}

	/**
	 * Gets the ticket status of event.
	 * @return the status
	 */
	public String getTicket_status() {
		return ticket_status;
	}

	/**
	 * Sets the ticket status of event.
	 * @param ticketStatus the status
	 */
	public void setTicket_status(String ticketStatus) {
		ticket_status = ticketStatus;
	}

	/**
	 * Gets the date when the tickets are for sale.
	 * @return the date
	 */
	public XMLGregorianCalendar getOn_sale_datetime() {
		return on_sale_datetime;
	}

	/**
	 * Sets the date when the tickets are for sale.
	 * @param onSaleDatetime the date
	 */
	public void setOn_sale_datetime(XMLGregorianCalendar onSaleDatetime) {
		on_sale_datetime = onSaleDatetime;
	}

	/**
	 * Gets the artists
	 * @return list of artists
	 */
	public List<Artist> getArtists() {
		return artists;
	}

	/**
	 * Sets the artists.
	 * @param artists list of artists
	 */
	public void setArtists(List<Artist> artists) {
		this.artists = artists;
	}

	/**
	 * Sets the {@link Venue} for this event.
	 * @param venue the venue
	 */
	public void setVenue(Venue venue) {
		this.venue = venue;
	}

	/**
	 * Gets the {@link Venue} for this event
	 * @return the venue
	 */
	public Venue getVenue() {
		return venue;
	}

	/**
	 * Sets the status for the event.
	 * @param status the status
	 */
	public void setStatus(String status) {
		this.status = status;
	}

	/**
	 * Gets the status for the event.
	 * @return the status
	 */
	public String getStatus() {
		return status;
	}
}
